# -*- coding: UTF-8 -*-

# 1. 建立dataframe对象
'''
数据格式：
datas = [
 {
 'level1':str, # 1级分类
 'level2':str, # 2级分类
 'level3'：[str,str] # 3级分类s
 }， ]
'''

import pandas as pd

# datas = [{'level1': '计算机/互联网/通信/电子', 'level2': '后端开发', 'level3s': []}, {'level1': '计算机/互联网/通信/电子', 'level2': '移动开发',
#                                                                         'level3s': ['所有', 'Android开发工程师', 'iOS开发工程师',
#                                                                                     '小程序开发工程师', '移动开发工程师', '其他']},
#          {'level1': '计算机/互联网/通信/电子', 'level2': '前端开发', 'level3s': ['所有', 'Web前端开发', 'HTML5开发工程师', '其他']},
#          {'level1': '计算机/互联网/通信/电子', 'level2': '人工智能',
#           'level3s': ['所有', '机器学习工程师', '深度学习工程师', '图像算法工程师', '图像处理工程师', '图像识别工程师', '语音识别工程师', '机器视觉工程师', '自然语言处理(NLP)',
#                       '算法工程师', '推荐算法工程师', '搜索算法工程师', '其他']}, {'level1': '计算机/互联网/通信/电子', 'level2': '游戏',
#                                                               'level3s': ['所有', '游戏策划师', '游戏系统策划', '游戏数值策划', '游戏关卡策划',
#                                                                           '游戏文案策划/剧情策划', '游戏界面设计师', '游戏角色设计师',
#                                                                           '游戏特效设计师', 'UE4特效师', '游戏动作设计师', '游戏场景设计师',
#                                                                           '游戏原画师', '游戏动画师', '游戏开发工程师', 'Cocos2d-x开发工程师',
#                                                                           'Unity3d开发工程师', 'UE4开发工程师', '游戏客户端开发工程师',
#                                                                           '游戏服务端开发工程师', '游戏测试', '游戏运营', '电子竞技运营',
#                                                                           '其他']},
#          {'level1': '计算机/互联网/通信/电子', 'level2': '测试',
#           'level3s': ['所有', '软件测试工程师', '功能测试', '性能测试', '安全测试', '自动化测试', '移动端测试', '测试开发', '测试总监', '测试经理', '测试主管', '系统测试',
#                       '标准化工程师', '测试工程师', '其他']}, {'level1': '计算机/互联网/通信/电子', 'level2': '运维/技术支持',
#                                                   'level3s': ['所有', '运维工程师', '自动化运维工程师', '系统工程师', '数据库工程师(DBA)',
#                                                               '系统集成工程师', 'ERP实施顾问', '网络安全工程师', '运维开发', '网站维护工程师',
#                                                               '技术支持/维护经理', '技术支持/维护工程师', '配置管理工程师', 'IT经理/IT主管',
#                                                               '网络工程师(IT工程师)', '网络管理(Helpdesk)', '网络维修', '手机维修', '电脑维修',
#                                                               '其他']}, {'level1': '计算机/互联网/通信/电子', 'level2': '数据',
#                                                                        'level3s': ['所有', '数据分析经理/主管', '数据分析师',
#                                                                                    'ETL开发工程师', 'BI工程师', '数据仓库工程师',
#                                                                                    '数据采集工程师', '数据建模工程师', '数据治理工程师',
#                                                                                    '其他']},
#          {'level1': '计算机/互联网/通信/电子', 'level2': '产品',
#           'level3s': ['所有', '产品总监', '产品经理/主管', '互联网产品经理', '移动产品经理', '用户产品经理', '电商产品经理', '产品专员', '产品助理', '需求工程师', '其他']},
#          {'level1': '计算机/互联网/通信/电子', 'level2': '运营',
#           'level3s': ['所有', '运营总监', '运营经理', '运营主管', '运营专员', '运营助理', '网站运营总监', '网站运营经理/主管', '网站运营专员', '网络推广总监',
#                       '网络推广经理/主管', '网络推广专员', 'SEO/SEM', '信息流优化师', '新媒体运营', '直播运营', '微信运营', '微博运营', '用户运营', '社区/社群运营',
#                       '活动运营', '内容运营', '品类运营', '数据运营', '线下运营', '产品运营', '网站编辑', '内容审核', '网站策划', '其他']},
#          {'level1': '计算机/互联网/通信/电子', 'level2': '技术管理',
#           'level3s': ['所有', '首席技术执行官CTO', '首席信息官CIO', '技术总监/经理', '项目总监', '项目经理', '项目主管', '项目执行/协调人员', '项目助理', '其他']},
#          {'level1': '计算机/互联网/通信/电子', 'level2': '电子商务',
#           'level3s': ['所有', '电商总监', '电商经理/电商主管', '电商专员', '电商运营', '跨境电商运营', '网店店长', '网店店铺管理员', '网店客服', '店铺推广', '网店模特',
#                       '其他']}, {'level1': '计算机/互联网/通信/电子', 'level2': '半导体/芯片',
#                                'level3s': ['所有', '集成电路IC设计/应用工程师', '芯片架构工程师', 'FPGA开发工程师', 'MEMS工程师', '射频芯片设计',
#                                            '模拟芯片工程师', '版图设计工程师', '模拟版图工程师', '数字前端工程师', 'IC验证工程师', 'FPGA原型验证工程师',
#                                            'EDA工程师', '可测性设计工程师(DFT)', '数字后端工程师', '芯片测试工程师', 'FAE 现场应用工程师', '半导体工艺工程师',
#                                            '工艺整合工程师(PIE)', '半导体设备工程师', '失效分析工程师(FA)', '封装工程师', '封装研发工程师', '半导体测试工程师',
#                                            '芯片销售工程师', '半导体器件工程师', '半导体文档工程师', '半导体产品经理/产品工程师', '半导体技术', '其他']},
#          {'level1': '计算机/互联网/通信/电子', 'level2': '电子/电器/仪器仪表',
#           'level3s': ['所有', '电子工程师/技术员', 'PCB工程师', '电子技术研发工程师', '电子软件开发(ARM/MCU...)', '电子元器件工程师', '电子工艺工程师', 'SMT工程师',
#                       '电子设备工程师', '电子/电器维修工程师/技师', '嵌入式软件开发(Linux/单片机/PLC/DSP…)', '嵌入式硬件开发(主板机…)', '硬件工程师', '高级硬件工程师',
#                       '硬件测试工程师', '电气工程师/技术员', 'PLC工程师', '电路工程师/技术员(模拟/数字)', '电声/音响工程师/技术员', '电池/电源开发', '仪器/仪表/计量分析师',
#                       '计量工程师', '激光/光电子技术', '变压器与磁电工程师', '家用电器/数码产品研发', '自动控制工程师/技术员', '机器人调试工程师', '安防系统工程师', '电子销售工程师',
#                       '电子文档工程师', '电子产品经理/产品工程师', '其他']}, {'level1': '计算机/互联网/通信/电子', 'level2': '通信技术开发及应用',
#                                                           'level3s': ['所有', '通信技术工程师', '无线通信工程师', '有线传输工程师', '射频工程师',
#                                                                       '数据通信工程师', '通信网络工程师', '核心网工程师', '基站工程师',
#                                                                       '通信设备工程师', '通信电源工程师', '电信交换工程师', '光通信工程师',
#                                                                       '通信测试工程师', '通信销售工程师', '通信文档工程师', '通信产品经理/产品工程师',
#                                                                       '通信项目管理', '其他']},
#          {'level1': '销售/客服', 'level2': '销售管理',
#           'level3s': ['所有', '销售总监', '销售经理', '销售主管', '业务拓展主管/经理', '渠道/分销总监', '渠道/分销经理', '渠道/分销主管', '大客户管理', '客户经理/主管',
#                       '区域销售总监', '区域销售经理', '区域销售主管', '城市经理', '团购经理/主管', '其他']}, {'level1': '销售/客服', 'level2': '销售人员',
#                                                                                 'level3s': ['所有', '大客户销售', '销售代表',
#                                                                                             '区域销售代表', '渠道/分销专员', '客户代表',
#                                                                                             '销售工程师', '电话销售', '地推专员',
#                                                                                             '门店销售', '海外销售', '网络销售/在线销售',
#                                                                                             '直播销售', '团购业务员', '经销商',
#                                                                                             '会籍顾问', '销售助理', '其他']},
#          {'level1': '销售/客服', 'level2': '销售行政及商务',
#           'level3s': ['所有', '销售行政经理/主管', '销售行政专员', '业务分析经理/主管', '业务分析专员/助理', '商务经理', '商务主管/专员', '商务助理', '销售行政助理',
#                       '其他']}, {'level1': '销售/客服', 'level2': '客服及支持',
#                                'level3s': ['所有', '客服总监', '客服经理', '客服主管', '客服专员/助理', '客户关系经理/主管', '售前/售后技术支持经理',
#                                            '售前/售后技术支持主管', '售前/售后技术支持工程师', '咨询热线/呼叫中心服务人员', '网络/在线客服', '投诉专员', 'VIP专员',
#                                            '其他']}, {'level1': '会计/金融/银行/保险', 'level2': '财务/审计/税务',
#                                                     'level3s': ['所有', '首席财务官 CFO', '财务总监', '财务经理', '财务专员', '财务顾问',
#                                                                 '财务主管/总账主管', '财务助理/财务文员', '财务分析经理/主管', '财务分析员',
#                                                                 '固定资产会计', '会计经理/会计主管', '会计', '会计助理', '成本经理/成本主管',
#                                                                 '成本管理员', '出纳员', '资金经理/主管', '资金专员', '审计经理/主管', '审计专员/助理',
#                                                                 '税务经理/税务主管', '税务专员/助理', '统计员', '其他']},
#          {'level1': '会计/金融/银行/保险', 'level2': '金融/证券/期货/投资',
#           'level3s': ['所有', '证券/期货/外汇经纪人', '证券分析师', '期货分析师', '量化研究', '证券交易员', '股票/期货操盘手', '金融/经济研究员', '金融产品经理',
#                       '金融产品销售', '机构业务销售', '投资总监', '投资经理', '基金经理', '投资顾问', '理财顾问', '投资银行业务', '投资银行财务分析', '融资经理/融资主管',
#                       '融资专员', '营业部总经理/副总经理', '风险管理/控制', '资产管理', '拍卖/担保/典当业务', '其他', '催收']},
#          {'level1': '会计/金融/银行/保险', 'level2': '银行',
#           'level3s': ['所有', '行长/副行长', '银行客户总监', '个人业务部门经理/主管', '个人业务客户经理', '公司业务部门经理/主管', '公司业务客户经理', '综合业务经理/主管',
#                       '综合业务专员', '理财经理', '资产评估/分析', '风险控制', '信贷管理', '信审核查', '进出口/信用证结算', '外汇交易', '清算人员', '高级客户经理/客户经理',
#                       '客户主管/专员', '营业部大堂经理', '信用卡销售', '呼叫中心客服', '银行柜员', '小微信贷专员', '其他']},
#          {'level1': '会计/金融/银行/保险', 'level2': '保险',
#           'level3s': ['所有', '保险精算师', '保险产品开发/项目策划', '保险业务经理/主管', '保险经纪人/保险代理', '保险电销', '保险核保', '保险理赔', '保险客户服务/续期管理',
#                       '保险培训师', '保险内勤', '契约管理', '理财顾问/财务规划师', '储备经理人', '保险业务推动/督导', '其他']},
#          {'level1': '生产/营运/采购/物流', 'level2': '生产/营运',
#           'level3s': ['所有', '工厂经理/厂长', '总工程师/副总工程师', '项目总监', '项目经理/主管', '项目工程师', '营运经理', '营运主管', '生产总监', '生产经理/车间主任',
#                       '生产主管', '生产领班/组长', '生产计划/物料管理(PMC)', '生产文员', '生产跟单', '设备主管', '化验员', '厂务', '其他']},
#          {'level1': '生产/营运/采购/物流', 'level2': '质量安全',
#           'level3s': ['所有', '质量管理/测试经理(QA/QC经理)', '质量管理/测试主管(QA/QC主管)', '质量管理/测试工程师(QA/QC工程师)', '可靠度工程师', '故障分析工程师',
#                       '认证工程师', '体系工程师', '质检员/测试员(QC)', '审核员', '环境/健康/安全经理/主管（EHS）', '环境/健康/安全工程师（EHS）', '安全员', '供应商管理',
#                       '采购材料、设备质量管理', '其他']}, {'level1': '生产/营运/采购/物流', 'level2': '工程/机械/能源',
#                                               'level3s': ['所有', '技术研发经理/主管', '技术研发工程师', '产品工艺/制程工程师', '产品规划工程师', '项目管理',
#                                                           '实验室负责人/工程师', '工程/设备经理', '工程/设备主管', '工程/设备工程师', '工程/机械绘图员',
#                                                           '工业工程师', '材料工程师', '机械工程师', '结构工程师', '模具工程师', '机电工程师', '机械设计',
#                                                           '模具设计', '维修经理/主管', '维修工程师', '装配工程师/技师', '铸造/锻造工程师/技师',
#                                                           '注塑工程师/技师', '焊接工程师/技师', '夹具工程师/技师', 'CNC工程师', '冲压工程师/技师',
#                                                           '锅炉工程师/技师', '电力工程师/技术员', '光源与照明工程', '光伏系统工程师', '汽车/摩托车工程师',
#                                                           '船舶工程师', '轨道交通工程师/技术员', '飞机维修机械师', '飞行器设计与制造', '水利/水电工程师',
#                                                           '空调/热能工程师', '石油天然气技术人员', '矿产勘探/地质勘测工程师', '其他']},
#          {'level1': '生产/营运/采购/物流', 'level2': '机械机床',
#           'level3s': ['所有', '数控操机', '数控编程', '机修工', '折弯工', '车工', '磨工', '铣工', '冲压工', '刨工', '钳工', '钻工', '镗工', '铆工', '钣金工',
#                       '抛光工', '切割技工', '模具工', '炼胶工', '硫化工', '吹膜工', '注塑工', '其他']},
#          {'level1': '生产/营运/采购/物流', 'level2': '印刷包装',
#           'level3s': ['所有', '印刷工', '校对/录入', '调色员', '烫金工', '晒版员', '印刷排版/制版', '装订工', '印刷机械机长', '数码直印/菲林输出', '调墨技师',
#                       '电分操作员', '打稿机操作员', '切纸机操作工', '裱胶工', '压痕工', '复卷工', '其他']},
#          {'level1': '生产/营运/采购/物流', 'level2': '汽车研发设计',
#           'level3s': ['所有', '汽车项目管理', '汽车设计工程师', '车身/造型设计', '汽车结构工程师', '内外饰工程师', '汽车电子工程师', '电气/电器工程师', '附件系统工程师',
#                       '动力总成工程师', '发动机工程师', '底盘工程师', '汽车安全性能工程师', '汽车试验工程师', '新能源电池工程师', '新能源电控工程师', '新能源电机工程师',
#                       '汽车标定工程师', '发动机匹配工程师', '车联网工程师', '智能驾驶工程师', '研发总监/部长/专家', '其他']},
#          {'level1': '生产/营运/采购/物流', 'level2': '汽车制造',
#           'level3s': ['所有', '汽车质量工程师', '供应商质量工程师', '前期质量工程师', '过程质量工程师', '客户质量工程师', '汽车装配工艺工程师', '总装工程师', '焊接工艺工程师',
#                       '冲压工艺工程师', '涂装工艺工程师', '其他']}, {'level1': '生产/营运/采购/物流', 'level2': '汽车销售与服务',
#                                                      'level3s': ['所有', '汽车销售/经纪人', '售后服务/客户服务', '汽车金融销售', '汽车金融经理',
#                                                                  '汽车金融专员', '车险定损/理赔', '汽车修理工', '汽车检验/检测', '汽车装饰美容',
#                                                                  '汽车钣金', '汽车喷漆', '汽车电工', '洗车工', '4S店经理/维修站经理', '二手车评估师',
#                                                                  '加油站工作员', '其他']},
#          {'level1': '生产/营运/采购/物流', 'level2': '技工普工',
#           'level3s': ['所有', '普工/操作工', '技工', '叉车司机/铲车司机', '吊车司机', '挖掘机司机', '组装工', '包装工', '焊工', '氩弧焊工', '电工', '电力线路工',
#                       '旋压工', '仪表工', '电镀工', '喷塑工', '水工', '木工', '漆工', '空调工', '电梯工', '锅炉工', '3D打印操作员', '学徒工', '其他']},
#          {'level1': '生产/营运/采购/物流', 'level2': '服装/纺织/皮革',
#           'level3s': ['所有', '服装/纺织设计总监', '服装/纺织设计', '服装/纺织/皮革工艺师', '面料辅料开发', '面料辅料采购', '服装/纺织/皮革跟单', '服装领班',
#                       '服装纺织质检员(QA/QC)', '板房/楦头/底格出格师', '电脑放码员', '纸样师/车板工', '裁床', '打样/制版', '裁剪工', '缝纫工', '手缝工', '烫工',
#                       '样衣工', '纺织工', '针织工', '配色工', '印染工', '漂染工', '挡车工', '整经工', '细纱工', '浆纱工', '其他']},
#          {'level1': '生产/营运/采购/物流', 'level2': '物流/仓储',
#           'level3s': ['所有', '物流总监', '物流经理', '物流主管', '物流专员/助理', '物流销售', '供应链总监', '供应链经理', '供应链主管/专员', '物料经理', '物料主管/专员',
#                       '仓库经理/主管', '仓库管理员', '仓库文员', '订单处理员', '运输经理/主管', '项目经理/主管', '货运代理', '集装箱业务', '海关事务管理', '报关与报检',
#                       '单证员', '船务/空运陆运操作', '快递员', '分拣员', '调度员', '安检员', '仓储理货员', '搬运工', '装卸工', '其他']},
#          {'level1': '生产/营运/采购/物流', 'level2': '采购',
#           'level3s': ['所有', '采购总监', '采购经理', '采购主管', '采购员', '采购助理', '买手', '供应商开发', '其他']},
#          {'level1': '生产/营运/采购/物流', 'level2': '贸易',
#           'level3s': ['所有', '贸易/外贸经理/主管', '贸易/外贸专员/助理', '外贸销售', '国内贸易人员', '业务跟单经理', '高级业务跟单', '业务跟单', '助理业务跟单', '其他']},
#          {'level1': '建筑/房地产', 'level2': '建筑规划与设计',
#           'level3s': ['所有', '室内设计总监', '室内设计经理/主管', '室内设计', '室内设计师助理', '软装设计', '精装设计', '家装顾问', '建筑设计师', '钢结构设计', '幕墙设计',
#                       '建筑结构设计', '建筑制图/模型/渲染', '暖通设计', '给排水设计', '建筑机电设计', '园艺/园林/景观设计', '城市规划设计', '规划与设计', 'BIM工程师',
#                       '其他']}, {'level1': '建筑/房地产', 'level2': '建筑工程与装潢',
#                                'level3s': ['所有', '建筑工程师', '高级建筑工程师/总工', '给排水/暖通工程', '幕墙工程师', '建筑机电工程师', '楼宇自动化',
#                                            '智能大厦/综合布线/安防/弱电', '精装修工程师', '房修工程师', '结构/土木/土建工程师', '公路/桥梁/港口/隧道工程', '岩土工程',
#                                            '测绘/测量', '开发报建', '工程造价师/预结算经理', '预结算员', '建筑工程管理/项目经理', '建筑项目助理', '建筑工程验收',
#                                            '工程监理', '市政工程师', '合同管理', '安全员', '资料员', '建筑安装施工员', '砌筑工', '瓦工', '混凝土工', '浇注工',
#                                            '钢筋工', '木工', '油漆工', '电梯工', '抹灰工', '施工开料工', '管道/暖通', '工长', '消防安全', '其他']},
#          {'level1': '建筑/房地产', 'level2': '房地产开发',
#           'level3s': ['所有', '房地产项目/策划经理', '房地产项目/策划主管/专员', '房地产投资管理', '房产项目配套工程师', '房地产项目招投标', '房地产投资分析', '房地产资产管理',
#                       '监察人员', '其他']}, {'level1': '建筑/房地产', 'level2': '房地产销售与中介',
#                                        'level3s': ['所有', '房地产销售经理/主管', '房地产销售', '房地产中介/置业顾问', '房地产评估', '房地产店长/经理',
#                                                    '房地产内勤', '房地产客服', '其他']}, {'level1': '建筑/房地产', 'level2': '物业管理',
#                                                                               'level3s': ['所有', '物业管理经理', '物业管理主管',
#                                                                                           '物业管理专员/助理', '招商/租赁/租售',
#                                                                                           '写字楼运营', '长租公寓管家/养老专员',
#                                                                                           '高级物业顾问/物业顾问', '前介工程师',
#                                                                                           '物业设施管理人员', '物业机电维修工',
#                                                                                           '物业机电工程师', '物业维修员', '停车管理员',
#                                                                                           '保安经理', '保安人员', '保洁', '绿化工',
#                                                                                           '其他']},
#          {'level1': '设计/市场/媒体/广告', 'level2': '视觉/交互设计',
#           'level3s': ['所有', '平面设计总监', '平面设计经理/主管', '平面设计师', '美工/电商设计师', 'UI设计师', '视觉设计师', '网页设计师', '用户体验（UE/UX）设计师',
#                       '交互设计师', '动画/3D设计', '特效设计师', '原画师', '绘画', '多媒体设计', 'Flash设计师', '音效设计师', '计算机辅助设计工程师', '仿真应用工程师',
#                       '网站架构设计师', '其他']}, {'level1': '设计/市场/媒体/广告', 'level2': '工业/艺术设计',
#                                           'level3s': ['所有', '工业设计/产品设计', '包装设计', '展览/展示/店面设计', '家具设计', '家居设计', '照明设计',
#                                                       '陈列设计', '工艺品/珠宝设计鉴定', '玩具设计', '其他']},
#          {'level1': '设计/市场/媒体/广告', 'level2': '市场/营销',
#           'level3s': ['所有', '市场/营销/拓展总监', '市场/营销/拓展经理', '市场/营销/拓展主管', '市场/营销/拓展专员', '市场助理', '互联网营销师', '市场分析/调研人员',
#                       '产品/品牌经理', '产品/品牌主管', '产品/品牌专员', '市场通路经理/主管', '市场通路专员', '市场企划经理/主管', '市场企划专员', '促销经理',
#                       '选址拓展/新店开发', '其他']}, {'level1': '设计/市场/媒体/广告', 'level2': '广告',
#                                             'level3s': ['所有', '广告客户总监/副总监', '广告客户经理', '广告客户主管/专员', '广告创意总监',
#                                                         '广告创意/设计经理', '广告创意/设计主管/专员', '广告制作执行', '广告销售', '美术指导', '文案/策划',
#                                                         '企业/业务发展经理', '企业策划人员', '其他']},
#          {'level1': '设计/市场/媒体/广告', 'level2': '公关/媒介',
#           'level3s': ['所有', '公关总监', '公关经理', '公关主管', '公关专员', '会务/会展经理', '会务/会展主管', '会务/会展专员', '媒介经理', '媒介主管', '媒介专员',
#                       '公关/媒介助理', '媒介销售', '活动策划', '活动执行', '其他']}, {'level1': '设计/市场/媒体/广告', 'level2': '影视/媒体',
#                                                                   'level3s': ['所有', '影视策划/制作人员', '导演/编导', '编剧', '制片人',
#                                                                               '艺术/设计总监', '艺术指导/舞台美术设计', '经纪人/星探',
#                                                                               '主播/主持人', '摄影师/摄像师', '后期制作', '视频剪辑',
#                                                                               '音效师', '配音员', '灯光师', '放映经理/主管', '放映员',
#                                                                               '其他']},
#          {'level1': '设计/市场/媒体/广告', 'level2': '编辑出版',
#           'level3s': ['所有', '总编/副总编', '编辑', '作家/撰稿人', '记者', '电话采编', '美术编辑', '排版设计', '出版/发行', '其他']},
#          {'level1': '人事/行政/高级管理', 'level2': '人力资源',
#           'level3s': ['所有', '人事总监', 'HRBP', '人事经理', '人事主管', '人事专员', '人事助理', '招聘经理/主管', '招聘专员/助理', '薪资福利经理/主管',
#                       '薪资福利专员/助理', '绩效考核经理/主管', '绩效考核专员/助理', '培训经理/主管', '培训专员/助理/培训师', '企业文化/员工关系/工会管理', '人力资源信息系统专员',
#                       '劳务派遣专员', '其他']}, {'level1': '人事/行政/高级管理', 'level2': '行政/后勤',
#                                          'level3s': ['所有', '行政总监', '行政经理/主管/办公室主任', '行政专员/助理', '经理助理/秘书', '文员', '党工团干事',
#                                                      '前台接待/总机/接待生', '图书管理员/资料管理员', '档案管理员', '电脑操作员/打字员', '后勤', '其他']},
#          {'level1': '人事/行政/高级管理', 'level2': '高级管理',
#           'level3s': ['所有', '首席执行官CEO/总裁/总经理', '首席运营官COO', '副总经理/副总裁', '合伙人', '总监/部门经理', '策略发展总监', '企业秘书/董事会秘书',
#                       '投资者关系', '办事处首席代表', '办事处/分公司/分支机构经理', '总裁助理/总经理助理', '其他']}, {'level1': '教育/培训', 'level2': '教师',
#                                                                                    'level3s': ['所有', '英语老师', '数学老师',
#                                                                                                '语文老师', '物理老师', '化学老师',
#                                                                                                '日语老师', '幼教', '早教老师',
#                                                                                                '美术老师', '钢琴老师', '音乐老师',
#                                                                                                '体育教师', '其他外语老师',
#                                                                                                '在线辅导老师', '小学教师', '初中教师',
#                                                                                                '高中教师', '大学教授', '职业技术教师',
#                                                                                                '讲师/助教', '家教', '兼职教师',
#                                                                                                '其他']},
#          {'level1': '教育/培训', 'level2': '教育咨询', 'level3s': ['所有', '课程顾问', '招生老师', '学习规划师', '留学顾问', '其他']},
#          {'level1': '教育/培训', 'level2': '教育管理',
#           'level3s': ['所有', '校长', '班主任/辅导员', '院校教务管理人员', '园长', '教研组长/主管', '教研员', '教师培训/师训', '其他']},
#          {'level1': '教育/培训', 'level2': '培训', 'level3s': ['所有', '培训督导', '培训讲师', '培训策划', '培训产品开发', '培训助理', '其他']},
#          {'level1': '生物/制药/化工/医疗', 'level2': '生物/制药/医疗器械',
#           'level3s': ['所有', '生物工程/生物制药', '化学分析测试员', '医药技术研发管理人员', '医药技术研发人员', '医药学术推广', '临床研究员', '临床协调员', '临床监查员',
#                       '临床数据分析员', '药品注册', '药品生产/质量管理', '药品市场推广经理', '药品市场推广主管/专员', '医药招商', '政府事务管理', '招投标管理', '医药销售经理/主管',
#                       '医药代表', '医药销售人员', '医疗器械注册', '医疗器械研发', '医疗器械生产/质量管理', '医疗器械市场推广', '医疗器械销售经理/主管', '医疗器械销售代表',
#                       '医疗器械维修人员', '其他']}, {'level1': '生物/制药/化工/医疗', 'level2': '化工',
#                                            'level3s': ['所有', '化工技术应用/化工工程师', '化工实验室研究员/技术员', '涂料研发工程师', '配色技术员',
#                                                        '塑料工程师', '化妆品研发', '食品/饮料研发', '造纸研发', '其他']},
#          {'level1': '生物/制药/化工/医疗', 'level2': '医院/医疗/护理',
#           'level3s': ['所有', '医院管理人员', '综合门诊/全科医生', '内科医生', '外科医生', '专科医生', '牙科医生', '妇产科医生', '眼科医生', '美容整形师', '医美咨询',
#                       '麻醉医生', '超声影像/放射科医师', '理疗师', '中医科医生', '针灸/推拿', '儿科医生', '心理医生', '心理咨询师', '营养师', '健康管理师',
#                       '药库主任/药剂师', '医学检验', '核酸检测员', '公共卫生/疾病控制', '消毒员', '防疫员', '护理主任/护士长', '护士/护理人员', '导医', '兽医', '验光师',
#                       '其他']}, {'level1': '咨询/法律/科研', 'level2': '咨询/顾问',
#                                'level3s': ['所有', '专业顾问', '咨询总监', '咨询经理', '专业培训师', '咨询员', '调研员', '猎头/人才中介', '情报信息分析人员',
#                                            '其他']}, {'level1': '咨询/法律/科研', 'level2': '律师/法务/合规',
#                                                     'level3s': ['所有', '律师/法律顾问', '律师助理', '法务总监', '法务经理', '法务主管/专员',
#                                                                 '法务助理', '合规经理', '合规主管/专员', '知识产权/专利/商标', '其他']},
#          {'level1': '咨询/法律/科研', 'level2': '科研', 'level3s': ['所有', '科研管理人员', '科研人员']},
#          {'level1': '服务业', 'level2': '餐饮服务',
#           'level3s': ['所有', '餐饮店长/经理', '餐饮大堂经理', '餐厅领班', '餐饮服务员', '行政主厨/厨师长', '中餐厨师', '西餐厨师', '日式厨师', '面点师', '西点师',
#                       '厨师助理/学徒', '茶艺师', '咖啡师', '调酒师/侍酒师/吧台员', '礼仪/迎宾', '餐饮预订员', '餐饮收银员', '配菜/打荷', '传菜主管', '传菜员', '洗碗工',
#                       '送餐员', '杂工', '其他']}, {'level1': '服务业', 'level2': '酒店旅游',
#                                             'level3s': ['所有', '酒店/宾馆经理', '酒店/宾馆销售', '预订主管', '预订员', '酒店大堂经理', '酒店前台',
#                                                         '宴会管理', '宾客服务经理', '楼面经理', '客房服务员/楼面服务员', '健身房服务', '行李员',
#                                                         '管家部经理/主管', '清洁服务人员', '旅游产品销售', '行程管理/计调', '签证专员', '导游/旅行顾问',
#                                                         '票务', '机场代表', '其他']}, {'level1': '服务业', 'level2': '美容保健',
#                                                                                'level3s': ['所有', '美容店长', '美容培训师/导师',
#                                                                                            '美容顾问', '美容师', '美容助理',
#                                                                                            '彩妆培训师', '专柜彩妆顾问(BA)', '化妆师',
#                                                                                            '造型师', '美发店长', '发型师',
#                                                                                            '发型助理/学徒', '美甲师', '美体师',
#                                                                                            '瘦身顾问', 'SPA 技师', '按摩', '足疗',
#                                                                                            '宠物护理/美容', '其他']},
#          {'level1': '服务业', 'level2': '百货零售',
#           'level3s': ['所有', '门店经理/店长', '店长助理', '品类管理', '品牌/连锁招商管理', '奢侈品业务', '店员/营业员', '珠宝销售顾问', '促销主管/督导/巡店', '导购管理',
#                       '促销员/导购员', '收银主管', '收银员', '陈列管理', '陈列员', '收货员', '理货员', '商品管理', '安防主管', '防损员/内保', '西点师/面包糕点加工',
#                       '生鲜食品加工/处理', '熟食加工', '兼职店员', '其他']}, {'level1': '服务业', 'level2': '交通运输服务',
#                                                             'level3s': ['所有', '飞机机长/副机长', '空乘人员', '列车/地铁车长', '船长/副船长',
#                                                                         '商务司机', '客运司机', '货运司机', '出租车司机', '班车司机',
#                                                                         '列车/地铁司机', '特种车司机', '驾校教练', '代驾', '地勤人员', '乘务员',
#                                                                         '船员', '其他']},
#          {'level1': '服务业', 'level2': '家政保洁',
#           'level3s': ['所有', '家政服务/保姆', '月嫂', '育婴师/保育员', '护工', '清洁工', '钟点工', '洗衣工', '送水工', '保镖', '空调维修', '家电维修',
#                       '寻呼员/话务员', '其他']}, {'level1': '服务业', 'level2': '运动健身',
#                                           'level3s': ['所有', '健身顾问/教练', '瑜伽老师', '舞蹈老师', '游泳教练', '救生员', '高尔夫教练', '体育运动教练',
#                                                       '其他']}, {'level1': '服务业', 'level2': '休闲娱乐',
#                                                                'level3s': ['所有', '网络主播', '主播助理', '带货主播', '司仪',
#                                                                            '婚礼/庆典策划服务', 'DJ', '驻唱/歌手', '舞蹈演员', '模特',
#                                                                            '演员/群众演员', '娱乐领班', '娱乐服务员', '前台迎宾', '其他']},
#          {'level1': '政府机构/翻译/其他', 'level2': '政府/非盈利机构', 'level3s': ['所有', '公务员', '志愿者/社会工作者', '城市管理网格员']},
#          {'level1': '政府机构/翻译/其他', 'level2': '翻译',
#           'level3s': ['所有', '英语翻译', '日语翻译', '德语翻译', '法语翻译', '俄语翻译', '意大利语翻译', '西班牙语翻译', '葡萄牙语翻译', '阿拉伯语翻译', '韩语/朝鲜语翻译',
#                       '泰语翻译', '中国方言翻译', '其他语种翻译']}, {'level1': '政府机构/翻译/其他', 'level2': '环保',
#                                                      'level3s': ['所有', '环保工程师', '环境影响评价工程师', '生态治理/规划', '环保检测', '水质检测员',
#                                                                  '水处理工程师', '固废工程师', '废气处理工程师', '其他']},
#          {'level1': '政府机构/翻译/其他', 'level2': '农/林/牧/渔',
#           'level3s': ['所有', '养殖部主管', '场长(农/林/牧/渔业)', '农艺师', '畜牧师', '饲养员', '农业技术员', '动物营养/饲料研发', '驯兽师/助理驯兽师', '其他']},
#          {'level1': '政府机构/翻译/其他', 'level2': '在校学生', 'level3s': ['所有', '研究生', '大学/大专应届毕业生', '中专/职校生', '其他']},
#          {'level1': '政府机构/翻译/其他', 'level2': '储备干部/培训生/实习生', 'level3s': ['所有', '储备干部', '培训生', '实习生']},
#          {'level1': '政府机构/翻译/其他', 'level2': '兼职', 'level3s': ['所有', '兼职']}]

# datas = [{'level1': '计算机/互联网/通信/电子', 'level2': '后端开发', 'level3s': []}]

import pickle
datas: list = pickle.load(open('./datas.pk1','rb'))


'''
展开后，变成：
datas_unfold = [
 {
 'level1':str, # 1级分类
 'level2':str, # 2级分类
 'level3'：[str] # 3级分类s1
 }，
  {
 'level1':str, # 1级分类
 'level2':str, # 2级分类
 'level3'：[str] # 3级分类s2
 }，]

'''

# 将level3展开
datas_unfold = []
for data in datas:
    for level3 in data['level3s']:
        datas_unfold.append(
            {
                'level1': data['level1'],
                'level2': data['level2'],
                'level3': level3,
            }
        )
df_unfold = pd.DataFrame(datas_unfold)
# print(df_unfold.head())

## 2.清洗数据，清空“所有”和“其他”分类
# print(df_unfold[(df_unfold['level3']!='所有') & (df_unfold['level3']!='其他')])  #-----自己写的，

# 好的写法：
drop_index = df_unfold.query(
    'level2 in ["所有","其他"] or level3 in ["所有","其他"]'
).index
df_unfold.drop(index=drop_index, inplace=True)
# print(df_unfold.head())

# 3.判断3级分类是否具有唯一性(即是否一样名字的三级分类对应不同的二级分类)
# df_unfold.duplicated()#------查找整行重复的数据


# =-----keep：first，last，false| false保留重复的所有数据，默认first保留第一条，
df_unfold.duplicated(subset=['level3'],keep=False)

print(df_unfold[df_unfold.duplicated(subset=['level3'],keep=False)].sort_values(by = 'level3'))


#4.保存excel
'''
数据变成“
level1 level2 level3


'''
df_fold = list()
df_unfold_group =df_unfold.groupby(['level1','level2'])


for level,g_level in df_unfold_group:
    dict = {}
    level3 = '\n'.join(g_level['level3'].tolist())
    dict['level1']=level[0]
    dict['level2'] = level[1]
    dict['level3'] = level3
    df_fold.append(dict)

print(pd.DataFrame(df_fold))

#写入excel
writer = pd.ExcelWriter('category.xlsx')
pd.DataFrame(df_fold).to_excel(writer,sheet_name='职位分类')
writer.save()

#5.同步到sql数据库中
# 使用sqlalchemy建立MySQL连接
from sqlalchemy import create_engine
# 创建连接，格式：mysql+pymysql://【用户名】:【密码】@【HOST】:【port】/【database】?charset=【编码】
con = create_engine('mysql+pymysql://root:19900416@localhost:3306/recruitment_collection?charset=utf8')
df_unfold.to_sql(
    'category', # 表名
    con = con, # MySQL连接
    index=False, # 不使用index
    if_exists='replace') # 如果表存在，则替换

'''在navicat终端输入查询命令：
-- create database recruitment_collection charset utf8;
use recruitment_collection;
alter table category add column id int primary key auto_increment;
'''

